https://leetcode.cn/problems/reorganize-string/
//class Solution {
//public:
//    string reorganizeString(string s)
//    {
//        int n = s.size();
//        int hash[26] = { 0 };
//        char maxVal;
//        int maxCount = 0;
//        for (auto& x : s)
//        {
//            if (maxCount < ++hash[x - 'a']) {
//                maxVal = x;
//                maxCount = hash[x - 'a'];
//            }
//        }
//        if (maxCount > (n + 1) / 2) return "";
//        string ret(n, ' ');
//        int index = 0;
//        for (int i = 0; i < maxCount; i++) {
//            ret[index] = maxVal;
//            index += 2;
//        }
//
//        for (int i = 0; i < 26; i++) {
//            if ((i + 'a') == maxVal) continue;
//            for (int j = 0; j < hash[i]; j++) {
//                if (index >= n) index = 1;
//                ret[index] = i + 'a';
//                index += 2;
//            }
//        }
//        return ret;
//    }
//};

https://leetcode.cn/problems/distant-barcodes/description/
//class Solution {
//public:
//    vector<int> rearrangeBarcodes(vector<int>& b)
//    {
//        unordered_map<int, int> ret;
//        int maxVal = 0, maxCount = 0;
//        for (auto& x : b) {
//            if (maxCount < ++ret[x]) {
//                maxVal = x;
//                maxCount = ret[x];
//            }
//        }
//
//        int index = 0;
//        vector<int> v(b.size());
//        for (int i = 0; i < maxCount; i++) {
//            v[index] = maxVal;
//            index += 2;
//        }
//        ret.erase(maxVal);
//        for (auto& [x, y] : ret)
//        {
//            for (int i = 0; i < y; i++) {
//                if (index >= b.size()) index = 1;
//                v[index] = x;
//                index += 2;
//            }
//        }
//
//        return v;
//    }
//};